import java.util.Scanner;

/**
 * Created by L.jp
 * Description:多多君最近在研究某种数字组合：
 * 定义为：每个数字的十进制表示中(0~9)，每个数位各不相同且各个数位之和等于N。
 * 满足条件的数字可能很多，找到其中的最小值即可。
 * 多多君还有很多研究课题，于是多多君找到了你--未来的计算机科学家寻求帮助。
 * User: 86189
 * Date: 2022-02-24
 * Time: 11:03
 */
//输出：
// 共一行，一个整数，表示该组合中的最小值。
//        如果组合中没有任何符合条件的数字，那么输出-1即可。
//意思就是在十进制整数中，找到各数位上的数字之和为N的最小值的那个数
// 输入例子1:
//5
//输出例子1:
//5
//例子说明1:
//符合条件的数字有：5，14，23，32，41
//其中最小值为5
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int N = scan.nextInt();
        if(N<10){  //数位之和小于10，那么最小值就是其本身
            System.out.println(10);
        }else if(N>45){ //由于各数位之间不能重复，能表达的最大的数就是123456789，他们加起来是45，如果比45还大，那么肯定有重复的为，返回-1
            System.out.println(-1);
        }else {
            //接下来就是对各位数之和在10~45之间的处理
            //要使达到各位数之和为N，那么最好先考虑把（0~9）最大的数放在最低位，然后从9到1一次递减，要使整个数最小，那么就尽可能把最小的数放在最高位
            int ret = 0;//最终的结果
            int digit = 0;//这是为了达到不同位数的，一位数就是10^1，两位数就是10^2。。。。
            for (int i = 9; i > 0; i--) {
                if (i <= N) {
                    N -= i; //要使找到各位数之和最小的就要慢慢找，不是一下就找到最小的
                    ret += (int) Math.pow(10, digit) * i; //对于两位数，三位数这些的，肯定是要让之前得到的结果 + 10的几次幂  *  一个数
                    digit++; //幂逐渐变大
                }
            }
            System.out.println(ret);
        }
    }
}
